#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

#include "estoque.h"

static int contpro = 0;

void cadastrarProduto();
void consultarProduto();
void excluirProduto();
void relatorioDescricao();
void relatorioQuantidade();
int produtoPesquisar(char *str, struct produtos src[]);
void ordernarQuantidade(int cnt, struct produtos ord[]);
void ordernarDescricao(int cnt, struct produtos ord[]);

void cadastrarProduto(){
     int sn, c = contpro;
     do {
         clrscr();
         sn = validaqtd(contpro);
         if ( sn ) {
             c++; 
             p[contpro].codigo = c; 
             printf("\n\n- Cadastro de Produto: \n");
             printf("\tCodigo.....: %0.5d\n", p[contpro].codigo);
             
             printf("\tDescricao..: ");
             scanf("%s", &p[contpro].descricao);
             printf("\tV. Compra..: ");
             scanf("%f", &p[contpro].valorcompra); 
             printf("\tV. Venda...: ");
             scanf("%f", &p[contpro].valorvenda); 
             printf("\tQuantidade.: ");
             scanf("%f", &p[contpro].quantidade); 
             contpro ++;
         }
         else 
             printf("\n\n\t\tArray completo!\n");
     } while ( sn && questiona("\n\n\t\t\t- Deseja cadastrar outro ? [SN]   ") );
}

void consultarProduto(){
     int i;
     char nm[SZTXT];
     
     clrscr();
     if (contpro == 0)
        printf("\nBanco de dados vazio!");
     else {
          printf("Consulta Produto:\n \t- Informe o Nome: ");
          scanf("%s", &nm);
          i = produtoPesquisar(nm, p); 
          
          if (i > -1) {
             printf("Produto....: %s  \n", p[i].descricao  );
             printf("Saldo......: %.2f\n", p[i].quantidade );
             printf("V. Compra..: %.2f\n", p[i].valorcompra);
             printf("V. Venda...: %.2f\n", p[i].valorvenda );                
          }
     }
     pause();
}

void relatorioProduto() {
     int i;
     clrscr();
     printf("Relacao de Produtos\n");
     printf("%-20s %-10s %-10s %-10s\n", "Descricao", "Quant.    ", "V.Venda   ", "V.Compra  ");
     for (i = 0; i < contpro; i++) {
         printf("%-20s %-8.2f %-8.2f %-8.2f\n", p[i].descricao, p[i].quantidade, p[i].valorvenda, p[i].valorcompra);
         if (i > 20) {
            pause();
            clrscr();
         }
     }
     pause();
}

void relatorioDescricao() {
     ordernarDescricao(contpro, p);
     relatorioProduto();
}

void relatorioQuantidade(){
     ordernarQuantidade(contpro, p);
     relatorioProduto();
}

void excluirProduto(){
     clrscr();
}

int produtoPesquisar(char *str, struct produtos src[]){
    int i, r = -1;
    for (i = 0; i < MAX; i++) 
        if ( strcmp( str, src[i].descricao) == 0 ) {
           r = i;
           break;
        }
    return r;
}

void ordernarQuantidade(int cnt, struct produtos ord[]) {
     int i, j;
     struct produtos aux;
     for (i = 0; i < cnt - 1; i++)
         for (j = cnt - 1; j >= i; j++) {
             if (ord[j - 1].quantidade > ord[j].quantidade) {
                aux         = ord[j - 1];
                ord[j - 1]  = ord[j];
                ord[j]      = aux;
             }
         }
}

void ordernarDescricao(int cnt, struct produtos ord[]) {
     int i, j;
     struct produtos aux;
     for ( i = 0; i < cnt - 1; i++ )
         for ( j = cnt - 1; j >= i; j++ ) {
             if (strcmp(ord[j - 1].descricao, ord[j].descricao) > 0) {
                aux         = ord[j - 1];
                ord[j - 1]  = ord[j];
                ord[j]      = aux;
             }
         }
}
